package com.effectiv.req1.domain;

import java.util.List;

import org.joda.time.DateTime;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.mongodb.core.mapping.DBRef;
import org.springframework.data.mongodb.core.mapping.Document;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Document(collection="t_use_case")
@ToString
public class UseCase {
	@Id
	@Getter @Setter
	private String id;
	@Getter @Setter
	private String name;
	@Getter @Setter
	private String description;
	
	@CreatedBy
	@DBRef
	@Getter @Setter
	private User createdBy;
	
	@LastModifiedBy
	@DBRef
	@Getter @Setter
	private User lastUpdatedBy;
	
	@CreatedDate
	@Getter @Setter
	private DateTime createdDate;
	
	@LastModifiedDate
	@Getter @Setter
	private DateTime lastUpdatedDate;
	
	@DBRef
	@Getter @Setter
	private Project project;
	
	@DBRef
	@Getter @Setter
	private Company company;
	
	@Getter @Setter
	private Flow mainFlow;
	
	
	@Getter @Setter
	private List<Actor> actors;
	@Getter @Setter
	private List<String> preConditions;
	@Getter @Setter
	private List<String> postConditions;
	
	@Getter @Setter
	private String priority;
	
	@Getter @Setter
	private List<String> exceptions;
	
	@DBRef
	@Getter @Setter
	private List<UseCase> includes;
	@Getter @Setter
	private List<String> specialRequirements;
	@Getter @Setter
	private List<String> assumptions;
	@Getter @Setter
	private List<Note> notes;
	@Getter @Setter
	private List<String> issues;
	
	@DBRef
	@Getter @Setter
	private Lov status;
	
	@Getter @Setter
	private Frequency frequency;
}
